package com.example.feign;

import com.alibaba.fastjson.JSONObject;
import feign.HeaderMap;
import feign.QueryMap;
import feign.RequestLine;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

import java.net.URI;
import java.util.Map;

@FeignClient(name = "feignHttpDynaClient")
public interface HttpDynaConsumeService {

    /**
     * 不可用
     * 外部http请求 服务端收到的为post请求
     * 报错 method GET must not have a request body
     * @return
     */
    @RequestLine("GET")
    String getGoodsList(URI uri, @RequestParam Map<String,Object> map);

    /**
     * 可用
     * @param uri
     * @param map
     * @return
     */
    @RequestLine("POST")
    String postGoodsList2(URI uri, @RequestParam Map<String,Object> map);

    /**
     * 可用
     * @param uri
     * @param map
     * @return
     */
    @RequestLine("GET")
    String getGoodsList2(URI uri, @QueryMap Map<String,Object> map);

    /**
     * 可用
     * @param uri
     * @param map
     * @return
     */
    @RequestLine("POST")
    String postGoodsList(URI uri, @QueryMap Map<String,Object> map);

    /**
     * 可用
     * @param uri
     * @param map
     * @param headmap
     * @return
     */
    @RequestLine("GET")
    String getGoodsList(URI uri, @QueryMap Map<String,Object> map,@HeaderMap Map<String,Object> headmap);

    /**
     * 可用
     * @param uri
     * @return
     */
    @RequestLine("POST")
    String postGoodsList(URI uri);

    /**
     * 可用
     * @param uri
     * @return
     */
    @RequestLine("GET")
    String getGoodsList(URI uri);
    @RequestLine("GET")
    String getGoodsList();

    /**
     * 可用
     */
    @RequestLine("POST")
    String getGoodsList(URI uri, JSONObject jsonObject);

    /**
     * 可用  body请求
     * @param uri
     * @param jsonObject
     * @return
     */
    @RequestLine("POST")
    String qryBalByDate(URI uri, @RequestBody JSONObject jsonObject);

    /**
     * 可用  body请求 head參數
     * @param uri
     * @param jsonObject
     * @return
     */
    @RequestLine("POST")
    String qryBalByDate(URI uri, @RequestBody JSONObject jsonObject,@HeaderMap Map<String,Object> map);


    @RequestLine("POST")
    String qryBalByDate(URI uri, @QueryMap Map<String,Object> paramMap,@RequestBody JSONObject jsonObject,@HeaderMap Map<String,Object> headMap);

    @RequestLine("POST")
    String headRequest(URI uri, @HeaderMap Map<String,Object> map);
}
